﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using SIMCObjetoNegocio;

public partial class CambioContrasenna : System.Web.UI.Page
{


    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            
            SimcMembershipProvider provider = (SimcMembershipProvider)Membership.Provider;

            if (Request.QueryString["Tipo"] != null)
            {
                string opcion = Request.QueryString["Tipo"];
                if (opcion == "2")
                {
                    WUCCambioPregunta.Visible = true;
                    WUCContrasenna.Visible = false;
                }
                else
                {
                    WUCCambioPregunta.Visible = false;
                    WUCContrasenna.Visible = true;
                }
            }
            else
            {
                MembershipUsuario usuario = provider.Usuario;
                if (usuario.PasswordQuestion == "NULL")
                {
                    WUCCambioPregunta.Visible = true;
                }
            }
        }
    }
    protected void btnCambiar_Click(object sender, EventArgs e)
    {
        SimcMembershipProvider provider = ((SimcMembershipProvider)Membership.Provider);

        try
        {
            if (provider.Usuario.TipoUsuario == TipoUsuario.Externo)//Solo se puede cambiar el password a usuarios externos
            {
                bool resp = true;
                string password = txtContrasennaActual.Text;
                //provider.ValidatePassword(password,provider.Usuario.UserName);
                if (WUCContrasenna.Visible == true)
                {
                    string passwordNew = ((TextBox)WUCContrasenna.FindControl("txtNuevaContrasenna")).Text;
                    provider.ValidatePassword(passwordNew, provider.Usuario.UserName);
                    resp = provider.ChangePassword(provider.Usuario.UserName, password, passwordNew);
                    password = passwordNew;
                }

                if ((WUCCambioPregunta.Visible == true) && (resp))
                {
                    string pregunta = ((DropDownList)WUCCambioPregunta.FindControl("ddlPregunta")).SelectedValue;
                    string respuesta = ((TextBox)WUCCambioPregunta.FindControl("txtRespuesta")).Text;
                    resp = provider.ChangePasswordQuestionAndAnswer(provider.Usuario.UserName, password, pregunta, respuesta);
                }

                if (resp)
                {
                    provider.Usuario.TempPasswordDate = DateTime.MinValue;
                    provider.UpdateUser(provider.Usuario);
                    provider.ActualizarUsuario();

                    Session["Variable"] = new SessionVariable { PersonaId = ((provider.Usuario.TipoUsuario == TipoUsuario.Interno) ? ((Usuario)provider.Usuario.ProviderUserKey).Id : 1) };

                    if (provider.Usuario.TipoUsuario == TipoUsuario.Interno && provider.Usuario.rol == null)
                    {
                        Response.Redirect("~/SeleccionDeRol.aspx");
                    }
                    else
                    {
                        Response.Redirect("~/PrincipalExterno.aspx");
                    }
                }
            }
            else
            {
                lblError.Text = "Solo pueden cambiar contraseña los usuarios externos.";
            }

        }
        catch (Exception ex)
        {
            lblError.Text = ex.Message;
        }
    }
}